package 学生管理系统;

import java.util.ArrayList;
import java.util.Scanner;

public class StudentSystem {
    public static void main(String[] args) {
        //创建学生列表，用来存储学生对象
        ArrayList<Student> arr = new ArrayList<>();
        //给整个while循环语句起别名loop1,在使用break语句可指定终止该while语句
        loop1:
        while (true) {
            System.out.println("-------------欢迎来到学生管理系统------------");
            System.out.println("1:  添加学生");
            System.out.println("2:  删除学生");
            System.out.println("3： 修改学生");
            System.out.println("4： 查询学生");
            System.out.println("5： 退出");
            System.out.println("请输入您的选择：");
            Scanner sc = new Scanner(System.in);
            String choose = sc.next();//录入字符串，防止程序报错
            //给整个switch语句起别名loop,在使用break语句可指定终止该switch语句
            loop:
            switch (choose) {
                case "1" -> addStudent(arr);
                case "2" -> deleteStudent(arr);
                case "3" -> changeStudent();
                case "4" -> findStudent(arr);
                case "5" -> {
                    System.out.println("结束程序！");
                    break loop1;//给整个while循环语句起别名loop1,在使用break语句可指定终止该while语句
                    // System.exit(0);//停止虚拟机的的运行，与上个break loop;语句同效，只能二选一
                }
                default -> System.out.println("没有这个选择");
            }
        }
    }

    //1:  添加学生
    public static Student addStudent(ArrayList<Student> arr) {
        Student stu = new Student();
        System.out.println("请输入学生姓名：");
        Scanner sc = new Scanner(System.in);
        String name = sc.next();
        stu.setName(name);
        System.out.println("请输入学生学号：");
        while (true) {
            int id = sc.nextInt();
            int count = 0;
            for (int i = 0; i < arr.size(); i++) {
                if (arr.get(i).getId() == id) {
                    count++;
                }
            }
            if (count == 0) {
                stu.setId(id);
                break;
            } else {
                int id1 = arr.get(arr.size() - 1).getId();
                id1 += 1;
                System.out.println("该学号已存在,建议学号设为：" + id1);
                System.out.println("请重新输入：");
            }
        }
//        System.out.println("该学号已存在，请重新输入：");
        System.out.println("请输入学生年龄：");
        int age = sc.nextInt();
        stu.setAge(age);
        arr.add(stu);//将Student类型的数据添加到列表中
        System.out.println("学生添加成功！");
        return stu;
    }

    //2:  删除学生
    public static void deleteStudent(ArrayList<Student> arr) {
        System.out.println("请输入您要删除的学生的学号：");
        Scanner sc = new Scanner(System.in);
        int id = sc.nextInt();
        for (int i = 0; i < arr.size(); i++) {
            if (arr.get(i).getId() == id) {
                Student r = arr.remove(i);//获取已删除的学生
                System.out.println("学生：" + r.getName() + "已删除！");
                break;
            }
            System.out.println("学生不存在！");
        }
    }

    //3： 修改学生
    public static void changeStudent() {

    }

    //4： 查询学生
    public static void findStudent(ArrayList<Student> arr) {
        System.out.println("请输入你要查询的学生的学号：");
        Scanner sc = new Scanner(System.in);
        int id = sc.nextInt();
        loop:
        {
            for (int i = 0; i < arr.size(); i++) {
                if (id == arr.get(i).getId()) {//先获取学生元素，再获取元素中的id元素
                    System.out.println("学生姓名：" + arr.get(i).getName() + "  学生年龄:" + arr.get(i).getAge() + "  学生id:" + arr.get(i).getId());
                    break loop;
                }
            }
            System.out.println("没有该学生！");
        }
    }
}
